/*********************************************************
This class maintains the identity which points out the configuration
of a NCU.  This class has two data members.  One of them is
a char which indicates the type of a NCU.  There are four types
of NCUs defined by Chun-Ming Wang.  Ther are type A, B, C and D.
Each of them has distinct characteristics.  The second data member
of the class is an unsigned int.  This data member indicates the number
of the lateral outputs contained in a NCU. An assumption that the number of 
the lateral outputs contained in a NCU is no more than 1000 
is made for this class.
Author:Chun-Ming Wang
Date of Modification: 01/06/2006 (dd/mm/yyyy)
***********************************************************/
#pragma once
#ifndef _NCULabel
#define _NCULabel
#include <string>
#include "Misc.h"
using namespace std;
class NCULabel
{
public:
	// constructors
	NCULabel();
	explicit NCULabel(const char &id);
	NCULabel(const char &id, const unsigned int &num);
	NCULabel(const NCULabel &rhs);
	// copy assignment operator
	NCULabel& operator=(const NCULabel &rhs);
	// destructor
	virtual ~NCULabel();
	// access functions
	void identity(const char &id);
	const char& identity() const;
	void numCV(const unsigned int &num);
	const unsigned int& numCV() const;
	const string label() const;
private:
	char m_id; // identity of a NCU.
	unsigned int m_numCV; // store the number of the composite vents contained in a NCU
};
#endif